From e46971306a7d1997144669b84c2a59ba0324d5c5 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 16 Jan 2012 11:18:42 +0100 Subject: [PATCH] Ensure we can load images via resource:// uris from CSS --- gtk/gtkcssimageurl.c | 14 ++++++++++---- gtk/gtkcssparser.c | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gtk/gtkcssimageurl.c b/gtk/gtkcssimageurl.c index 2f1cca9a47..a548d93125 100644 --- a/gtk/gtkcssimageurl.c +++ b/gtk/gtkcssimageurl.c @@ -67,19 +67,25 @@ gtk_css_image_url_parse (GtkCssImage *image, GtkCssImageUrl *url = GTK_CSS_IMAGE_URL (image); GdkPixbuf *pixbuf; GFile *file; - char *path; cairo_t *cr; GError *error = NULL; + GFileInputStream *input; file = _gtk_css_parser_read_url (parser, base); if (file == NULL) return FALSE; - path = g_file_get_path (file); + input = g_file_read (file, NULL, &error); + if (input == NULL) + { + _gtk_css_parser_take_error (parser, error); + return FALSE; + } g_object_unref (file); - pixbuf = gdk_pixbuf_new_from_file (path, &error); - g_free (path); + pixbuf = gdk_pixbuf_new_from_stream (G_INPUT_STREAM (input), NULL, &error); + g_object_unref (input); + if (pixbuf == NULL) { _gtk_css_parser_take_error (parser, error); diff --git a/gtk/gtkcssparser.c b/gtk/gtkcssparser.c index cf87ef929a..44b00c305c 100644 --- a/gtk/gtkcssparser.c +++ b/gtk/gtkcssparser.c @@ -873,6 +873,7 @@ _gtk_css_parser_read_url (GtkCssParser *parser, GFile *base) { gchar *path; + char *scheme; GFile *file; if (_gtk_css_parser_try (parser, "url", FALSE)) @@ -907,6 +908,15 @@ _gtk_css_parser_read_url (GtkCssParser *parser, g_free (path); return NULL; } + + scheme = g_uri_parse_scheme (path); + if (scheme != NULL) + { + file = g_file_new_for_uri (path); + g_free (path); + g_free (scheme); + return file; + } } else { -- 2.30.2